package com.logic.modular.act.cultivate.vo;

import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;

public class CultivateVo {
    public static class PlayerTavernVo {
        @Data
        public static class upgrade {
            @NotNull(message = "抽卡类型不能为空")
            @ApiModelProperty(value = "抽卡类型 1武将 2技能", required = true)
            private Long type;
        }
    }

    public static class PlayerHeroVo {
        @Data
        @AllArgsConstructor
        @NoArgsConstructor
        public static class RisingStar {
            @NotNull(message = "玩家武将id不能为空")
            @ApiModelProperty("玩家武将id")
            private Long playerHeroId;
        }

        @Data
        public static class levelUp {
            @NotNull(message = "武将id不能为空")
            @ApiModelProperty("武将id")
            private Long playerHeroId;
        }

        @Data
        public static class equip {
            @NotNull(message = "武将id不能为空")
            @ApiModelProperty("武将id")
            private Long coreHeroId;

            @NotNull(message = "背包物品id不能为空")
            @ApiModelProperty("背包物品id")
            private Long playerBagItemId;
        }


        @Data
        public static class EqSelect {
            @NotNull(message = "武将id不能为空")
            @ApiModelProperty("武将id")
            private Long playerHeroId;
        }

        @Data
        public static class levelUpBy2006s {
            @NotNull(message = "武将id不能为空")
            @ApiModelProperty("武将id")
            private Long playerHeroId;

            @NotNull(message = "道具使用数量不能为空")
            @ApiModelProperty(value = "道具使用数量", required = true)
            private Long num;
        }


        @Data
        public static class wearSkill {
            @NotNull(message = "玩家武将id不能为空")
            @ApiModelProperty("玩家武将id")
            private Long playerHeroId;

            @NotNull(message = "卡槽位置不能为空")
            @Min(value = 1, message = "卡槽位置不能小于1")
            @Max(value = 2, message = "卡槽位置不能大于2")
            @ApiModelProperty(value = "卡槽位置", required = true)
            private Integer skillSlot;

            @NotNull(message = "技能id不能为空")
            @ApiModelProperty("技能id")
            private Long coreSkillStarId;
        }

        @Data
        public static class unloadSkill {
            @NotNull(message = "武将id不能为空")
            @ApiModelProperty("武将id")
            private Long playerHeroId;
            @Min(value = 1, message = "卡槽位置不能小于1")
            @Max(value = 2, message = "卡槽位置不能大于2")
            Integer skillSlot;
        }
    }

    public static class PlayerBagVo {
        @Data
        public static class useProp {
            @NotNull(message = "道具id不能为空")
            @ApiModelProperty("道具id")
            private Long corePropId;

            private BigDecimal num;

            @ApiModelProperty("城池id")
            private Long cityId;
        }

        @Data
        public static class useGiftPack {
            Long corePropId;
            Long[] selectionOptions;
        }

        @Data
        public static class recycleProp {
            Long playerBagItemId;
            int num;
        }

        @Data
        public static class useStrategy {

        }
    }

    public static class PlayerSkillVo {
        @Data
        public static class RisingStar {
            @NotNull(message = "武将id不能为空")
            @ApiModelProperty("武将id")
            private Long playerSkillId;
        }
    }

    public static class PlayerScienceVo {
        @Data
        public static class pay {
            @NotNull(message = "计策物品id不能为空")
            @ApiModelProperty("计策物品id")
            private Long sciencePropId;
        }

        @Data
        public static class accelerate {
            @NotNull(message = "计加数时间不能为空")
            @ApiModelProperty("加数时间 单位 60分钟")
            private Long num;
        }
    }
}
